package com.weigecoder.warehouse.mapper;

import com.weigecoder.warehouse.entity.Role;
import com.weigecoder.warehouse.page.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author 
* @description 针对表【role(角色表)】的数据库操作Mapper
* @createDate 2023-08-14 16:38:02
* @Entity com.weigecoder.warehouse.entity.Role
*/
public interface RoleMapper{

    //查询状态正常的所有角色的方法
    List<Role> selectAllRole();

    //根据用户ID查询用户角色
    List<Role> selectRolesByUserId(int userId);

    //根据用户ID删除用户已有的角色
    void delRoleByUserId(Integer userId);

    //根据当前角色名查询当前角色的id
    int queryRoleIdByRoleName(String roleName);

    // 更新用户角色中间表，给用户分配角色
    void insertUserRole(@Param("userId") Integer userId, @Param("roleId") Integer roleId);

    //根据用户ID集合删除用户已有的角色
    void delRoleByUserIdList(List<Integer> userIds);

    //查询角色总行数的方法
    int selectRoleCount(Role role);

    //分页查询角色的方法
    List<Role> selectRolePage(@Param("page") Page page, @Param("role") Role role);

    //根据角色id修改角色状态，启用或禁用角色
    int updateRoleState(Role role);

    //根据角色名称或者角色代码查询角色的方法
    Role findRoleByNameOrCode(@Param("roleName") String roleName, @Param("roleCode") String roleCode);

    //添加角色的方法
    int insertRole(Role role);

    //根据角色id删除角色的方法
    int deleteRoleById(Integer roleId);

    //根据角色id修改角色描述的方法
    int updateDescById(Role role);

    //根据角色id查询角色已分配的所有权限(菜单)的id
    List<Integer> findAuthByRoleId(Integer roleId);


    void deleteUserAndRoleByRoleId(Integer roleId);

    List<Integer> findAuthByUserId(Integer userId);

    List<Integer> selectAllUserIdsByRoleId(Integer roleId);
}




